/**********************************************************************************************/
// dgt_AlgLogic.h
//
// Common Lib for Digital Studio
// Block of management of algorithm
// Class, which represent logic of algorithm 
//
// Copyright Diamant Group 2008
/**********************************************************************************************/
#ifndef _dgt_AlgLogic_h_
#define _dgt_AlgLogic_h_

/**********************************************************************************************/
// -------------------------------------------------------------------------------------------//
//                                   Logic table											  //
// -------------------------------------------------------------------------------------------//
// 1. Start block															Int				  //
// 2. Finish block															Int				  //
// 3. List of condition ( number from condition table )						Array of Int	  //
/**********************************************************************************************/

#include "dgtKernel.h"
#include "dgt_SmartMacros.h"

SMART_CLASS( dgt_AlgLogic );

WX_DECLARE_OBJARRAY( dgt_AlgLogic_Ptr, dgt_AlgLogArray ); 

/**********************************************************************************************/
/**
* \brief Class, which represent table of conditions of algorithm
*/
class dgt_AlgLogic
{
	public://///////////////////////////////////////////////////////////////////////////////////

		/**
		* @brief Ctor as default
		*/
		dgt_AlgLogic( void )	{};

		/**
		* @brief Ctor 
		* @param inStartBlock	Start block
		* @param inFinBlock		Finish block
		* @param inCondList		Conditions list
		*/
		dgt_AlgLogic(	unsigned		inStartBlock,
						unsigned		inFinBlock,
						wxArrayInt 		inCondList );

		/**
		* @brief Dtor as default
		*/
		~dgt_AlgLogic( void ) {};

		/**
		* @brief Function for getting start block
		* @return Start block
		*/
		unsigned 				get_StartBlock( void );

		/**
		* @brief Function for setting start block
		* @param inStartBlock Start block
		*/
		void					set_StartBlock( unsigned inStartBlock );

		/**
		* @brief Function for getting finish block
		* @return Finish block
		*/
		unsigned				get_FinBlock( void );

		/**
		* @brief Function for setting finish block
		* @param inStartBlock Finish block
		*/
		void					set_FinBlock( unsigned inFinBlock );

		/**
		* @brief Function for setting conditions list
		* @return Conditions list
		*/
		wxArrayInt				get_CondList( void );

		/**
		* @brief Function for setting conditions list
		* @param inCondList Conditions List
		*/
		void					set_CondList( wxArrayInt inCondList );

	private:////////////////////////////////////////////////////////////////////////////////////

		unsigned				m_StartBlock;		/*!< Start block */

		unsigned				m_FinishBlock;		/*!< Finish block */

		wxArrayInt				m_CondList;			/*!< List of conditions */
};


#endif // _dgt_AlgConditions_h_
